package operator;

/**
 * @author shkstart
 * @date 2022/4/2 - 22:04
 */
/*① 条件表达式的结果为boolean类型

② 根据条件表达式真或假,决定执行表达式1,还是表达式2.如果表达式为true,则执行表达式1.
                                              如果表达式为false.则执行表达式2。

③ 表达式1 和表达式2要求是一致的。

④ 三元运算符可以嵌套使用

⑤ 凡是可以使用三元运算符的地方，都可以改写为if-else反之，不成立。

⑥ 如果程序既可以使用三元运算符，又可以使用if-else结构，那么优先选择三元运算符。
  原因：简洁、执行效率高。
  */
public class SanYuan {
    public static void main(String[] args) {
//        获取两个整数的较大值
        int n1 = 12;
        int n2 = 4;
        int max = (n1 > n2) ? n1 : n2;
        System.out.println("max = " + max);

        double num = (n1 > n2) ? 2 : 1.0;
        System.out.println("num = " + num);

//        (n1 > n2) ? 2 : "n2大";//编译错误
//        ****************************
        n2 = 12;
        String maxStr = (n1 > n2) ? "n1大" : ((n1 == n2) ? "n1与n2相等" : "n2大");
        System.out.println("maxStr = " + maxStr);

//        **************************
//        获取三个数的最大值
        int m1 = 123;
        int m2 = 23;
        int m3 = -33;

        int max1 = (m1 > m2) ? m1 : m2;
        int max2 = (max1 > m3) ? max1 : m3;
        System.out.println("max2 = " + max2);

//        不建议
//        int max3 = (((m1 > m2) ? m1 : m2) > m3) ? ((m1 > m2) ? m1 : m2) : m3;
//        System.out.println("max3 = " + max3);

//        改写成用if-else;
        if (n1 > n2) {
            System.out.println(n1);
        } else {
            System.out.println(n2);
        }
    }
}
